/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package educar.models;

import educar.db.JPA;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
/**
 *En esta clase se encuentran lo metodos necesario para que un docente pueda crear
 * una actividad completa.
 * @author gaston
 */
public class Actividad {
    
    //Atributo usado para almacenar la con
    public static JPA jpa = new JPA();
    
    //Atributo usado para asignar un codigo a una actividad
    private String codigoActividad; 
    
    //Atributo usado para asignar la descripcion de una actividad
    private String descripcion;
    
    //Atributo usado para guardar el codigo de una materia
    private String codigoMateria;
    
    //Atributo usado para almacenar la fecha de entrega de una actividad
    private String fechaEntrega;
    
      
// <editor-fold defaultstate="collapsed" desc="Constructor">    
    /**
     * 
     * @param codActividad
     * @param desc
     * @param codMateria
     * @param fecha 
     */
    public Actividad (String codActividad, String desc, String codMateria, String fecha){
        this.codigoActividad = codActividad;
        this.descripcion = desc;
        this.codigoMateria = codMateria;
        this.fechaEntrega = fecha;
    }
// </editor-fold>
    
// <editor-fold defaultstate="collapsed" desc="Constructor">
    /**
     * <hr>
     * Actividad(): constructor de la clase Actividad que recibe un vector de parametro con
     * los atributos de una actividad.
     * @param arreglo 
     * <hr>
     */
    public Actividad(String[] arreglo){
       this.setCodigoActividad(arreglo[1]);
       this.setCodigoMateria(arreglo[2]);
       this.setDescripcion(arreglo[3]);
       this.setFechaEntrega(arreglo[4]);
    }
// </editor-fold>
    
    /**
     * <hr>
     * save():Intenta obtener una actividad de la base de datos si lo logra retorna false ,
     * por cualquier problema que ocurra al intentar obtenerlo tambien retorna false, 
     * pero si logra ingresar la actividad retorna true.
     * <hr>
     * @return boolean
     */
    public boolean save() {
        //Se intenta obtener una actividad
        try {
            Actividad.getActividadPorCodigo(codigoActividad);
            return false;
        } //No se pudo obtener una actividad entonces se intenta ingresar
        catch (ActividadNotFound e1) {
            String[] columns = { "codActividad", "descripcion", "codMateria", "fechaEntrega" };
            PreparedStatement stm = jpa.newRecord("educar_dev.actividad", columns);
            
            try {//Intenta setear estos datos
                stm.setString(1, codigoActividad);
                stm.setString(2, descripcion);
                stm.setString(3, codigoActividad);
                stm.setString(4, fechaEntrega);
            } catch (SQLException e) {//Ocurrio un error al intentar ingresar la actividad
                e.printStackTrace();
                return false;
            }
            jpa.create(stm); //Inserta la actividad
            return true;
	}
    }//Fin del metodo save()
    
    /**
     * <hr>
     * getatividadPorCodigo(): Dado el codigo de una actividad, consulto la base de datos
     * usando este codigo para obtener todos los datos de la misma, en el caso que este 
     * no se encuentre lanza una excepcion ActividadNotFound.
     * <hr>
     * @param codigo
     * @return actividad
     * @throws ActividadNotFound 
     */
    public static Actividad getActividadPorCodigo(String codigo) throws ActividadNotFound {
        //Consulto en la base de datos la tabla facultad, usando codigo como clave
        ResultSet resultadoConsulta = null;
        resultadoConsulta = jpa.getByField("actividad", "codActividad", codigo); 
	
        Actividad actividad = null;
	try {
            if (resultadoConsulta.next()) {
                actividad = new educar.models.Actividad(resultadoConsulta.getString(1), resultadoConsulta.getString(2), resultadoConsulta.getString(3), resultadoConsulta.getString(4));
            } else{
                throw new ActividadNotFound();
            }
	} catch (SQLException e) {
            
	e.printStackTrace();
        }
        return actividad;
    }//Fin del metodo getActividadPorCodigo().
    
    
    /**
     * 
     * @param codAct 
     */
    public void setCodigoActividad(String codAct){
        this.codigoActividad = codAct;
    }
    
    /**
     * 
     * @param desc 
     */
    public void setDescripcion(String desc){
        this.descripcion = desc;
    }
    
    /**
     * 
     * @param codMat 
     */
    public void setCodigoMateria(String codMat){
        this.codigoMateria = codMat;
    }
    
    /**
     * 
     * @param fecha 
     */
    public void setFechaEntrega(String fecha){
        this.fechaEntrega = fecha;
    }
    
}//Fin de la clase Actividad.